package com.swak.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.swak.utils.StringUtils;

/**
 * 配置列
 * 
 * @author lifeng
 * @date 2020年10月7日 下午10:38:03
 */
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Column {

	/**
	 * @return 配置列名，默认按照驼峰取列名
	 */
	String value() default StringUtils.EMPTY;

	/**
	 * 自定义的类型
	 * 
	 * @return
	 */
	String type() default StringUtils.EMPTY;

	/**
	 * 类型处理器:默认没有
	 */
	String handler() default StringUtils.EMPTY;

	/**
	 * @return 忽略
	 */
	boolean ignore() default false;

	/**
	 * 统计字段; statistic 语句生效
	 * 
	 * 1. 如果是Number 字段执行 + ${v} 操作 2. 否则执行更新操作
	 * 
	 * @return
	 */
	boolean stat() default false;

	/**
	 * 开关字段; replace 语句中生效
	 * 
	 * @return
	 */
	boolean toggle() default false;

	/**
	 * 统计字段; statistic 语句生效 max(x1,x2): x1 是 填入的值； x2 是数据库中的值
	 * 
	 * @return
	 */
	boolean max() default false;

	/**
	 * 统计字段; statistic 语句生效 min(x1,x2): x1 是 填入的值； x2 是数据库中的值
	 * 
	 * @return
	 */
	boolean min() default false;
}
